package Day3_operator;

//原码，反码，补码
public class demo39 {
    public static void main(String[] args) {
        byte a = 127;//补码：01111111
        a += 1;//补码：10000000，只有第一个数为1，后面数全为0的数字才 只有补码，没有反码与原码
        System.out.println(a);

        short i = 10902;//原码:00101010 10010110，补码也是。
        a = (byte) (i);//强制转换就是取后面那一串作为补码：10010110
        System.out.println(a);//反码：10010101，原码：11101010；-（64+32+8+2）=-106

        a = 112;//原码：01110000，反码补码一样。
        //是在向上转型的过程中，在前面增加的数全是0
        short b = (short) a;//原码：00000000 01110000, 反码补码一样

        a = -112;//原码：11110000，反码：10001111，补码：10010000
        //需要注意的是在向上转型的过程中如果是负数类型，在前面增加的数全是1
        b = (short) a;//原码：10000000 01110000；反码：11111111 10001111；补码；11111111 10010000
        System.out.println(b);
    }
}
